python函数的作用、定义、传参、使用。以及递归函数,匿名函数等。
函数的作用
把一段代码封装成一个语法单元中,可以实现代码复用,使程序结构更清晰,方便维护、扩展。
函数的定义&使用
1 | ''' |
函数的参数传递
1 | # 位置传递,名称传递 |
1 | # 可选参数传递 |
1 | # 可变参数传递 |
递归函数
函数定义中调用函数自身的方式
- 链条:计算过程存在递归链条
- 基例:存在一个或多个不需要再次递归的基例
递归的实现:函数+分支结构
- 递归本身是一个函数,需要函数定义方式描述
- 函数内部,采用分支语句对输入参数进行判断
- 基例和链条,分别编写对应代码
1 | # n的阶乘 |
使用递归函数需要注意防止栈溢出。
解决递归调用栈溢出的方法是通过尾递归优化,在函数返回的时候,调用自身本身,并且,return语句不能包含表达式。这样,编译器或者解释器就可以把尾递归做优化,使递归本身无论调用多少次,都只占用一个栈帧,不会出现栈溢出的情况。
1 | def fact(n): |
尾递归事实上和循环是等价的,没有循环语句的编程语言只能通过尾递归实现循环。
Python标准的解释器没有针对尾递归做优化,任何递归函数都存在栈溢出的问题。
lambda函数(匿名函数)
用于定义简单的、能够在一行内表示的函数
使用lambda保留字定义,返回函数对象(与def定义的函数对象一毛一样)
1 | # < 函数名> = lambda < 参数>: < 表达式> |
1 | '''练习 用lambda打印helloWorld''' |